/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.facebook.presto.obs;

import com.facebook.presto.hive.s3.S3ConfigurationUpdater;
import org.apache.hadoop.conf.Configuration;

public interface ObsConfigurationUpdater
        extends S3ConfigurationUpdater
{

    String OBS_ACCESS_KEY = "presto.obs.access-key";
    String OBS_SECRET_KEY = "presto.obs.secret-key";
    String OBS_ENDPOINT = "presto.obs.endpoint";
    String OBS_SECURITY_TOKEN = "presto.obs.security-token";
    String OBS_STORAGE_CLASS = "presto.obs.storage-class";
    String OBS_PATH_STYLE_ACCESS = "presto.obs.path-style-access";
    String OBS_SSL_ENABLED = "presto.obs.ssl.enabled";
    String OBS_SSE_ENABLED = "presto.obs.sse.enabled";
    String OBS_SSE_TYPE = "presto.obs.sse.type";
    String OBS_SSE_KMS_KEY_ID = "presto.obs.sse.kms-key-id";
    String OBS_SSE_C_KEY_BASE64 = "presto.obs.sse.c-key-base64";
    String OBS_MAX_CLIENT_RETRIES = "presto.obs.max-client-retries";
    String OBS_MAX_ERROR_RETRIES = "presto.obs.max-error-retries";
    String OBS_MAX_BACKOFF_TIME = "presto.obs.max-backoff-time";
    String OBS_MAX_RETRY_TIME = "presto.obs.max-retry-time";
    String OBS_CONNECT_TIMEOUT = "presto.obs.connect-timeout";
    String OBS_SOCKET_TIMEOUT = "presto.obs.socket-timeout";
    String OBS_MAX_CONNECTIONS = "presto.obs.max-connections";
    String OBS_STAGING_DIRECTORY = "presto.obs.staging-directory";
    String OBS_STREAMING_UPLOAD_ENABLED = "presto.obs.streaming.enabled";
    String OBS_STREAMING_UPLOAD_PART_SIZE = "presto.obs.streaming.part-size";
    String OBS_ACL_TYPE = "presto.obs.upload-acl-type";
    String OBS_SKIP_GLACIER_OBJECTS = "presto.obs.skip-glacier-objects";

    void updateConfiguration(Configuration config);
}
